import store from '@/store'

/*
* 这段代码导出了一个名为 checkPermission 的函数。该函数用于检查当前用户是否具有指定的权限角色。它接受一个参数 value，这个参数是一个数组，包含了需要检查的权限角色。

函数首先会判断 value 是否存在、是否是一个数组，并且数组长度是否大于 0。如果满足这些条件，它会从 Vuex store 中获取当前用户的角色信息，
* 并将 value 中的角色列表与用户的角色信息进行匹配。如果用户的角色信息中包含了 value 中的任意一个角色，函数将返回 true，表示用户具有这个权限；
* 否则返回 false，表示用户没有这个权限。

如果 value 不符合上述条件，函数会输出一条错误信息到控制台，并返回 false，表示缺少必要的角色信息。*/
export default function checkPermission(value) {
  if (value && value instanceof Array && value.length > 0) {
    /*
    * 这段代码中，通过 store.getters.roles 从 Vuex store 中获取了当前用户的角色信息。roles 变量获取到的是一个数组，包含了用户所拥有的角色。

接下来，将 value 中的角色列表和 roles 进行匹配。通过使用 some() 方法，可以判断用户的角色信息是否包含了 value 中的任意一个角色。
* some() 方法会对数组中的每个元素依次调用一个回调函数，如果回调函数返回 true，则 some() 方法立即返回 true，否则继续对下一个元素进行调用。
* 这里的回调函数就是匹配逻辑，如果用户的角色信息中包含了 value 中的任意一个角色，则返回 true，表示用户具有这个权限；否则返回 false，表示用户没有这个权限。

最终，checkPermission() 函数会将判断结果返回。如果用户具有指定的权限角色，则返回 true，否则返回 false。*/
    const roles = store.getters && store.getters.roles
    const permissionRoles = value

    const hasPermission = roles.some(role => {
      return permissionRoles.includes(role)
    })
    return hasPermission
  } else {
    console.error(`need roles! Like v-permission="['admin','editor']"`)
    return false
  }
}
